Automated banking machines are well known. Two known examples of an automated banking machine which are commonly found in banks are a teller cash recycler (TCR) and a teller cash dispenser (TCD). A TCR can be used to deposit or dispense notes to a bank customer under the supervision of a bank teller. A TCD can dispense notes only, under bank teller supervision, to a customer. A further type of automated banking machine used by customers is an automated teller machine (“ATM”). ATMs enable customers to carry out banking transactions without any assistance from a teller. Common banking transactions that may be carried out with ATMs include the dispensing of cash, the making of deposits, the transfer of funds between accounts, the payment of bills and account balance inquiries. Other types of automated banking machines may allow customers to charge against accounts or to transfer funds. Other types of automated banking machines may print or dispense items of value such as coupons or vouchers. For the purposes of this disclosure an automated banking machine or automated transaction machine shall encompass any device which carries out transactions including transfers of value.
Automated banking machines, and also sub-system, components, etc. of the automated banking machine typically perform a multitude of functions based on instructions contained in installed software. The installed software interacts not only with the components of the system, but also components of other systems within the automated banking machine and with systems and components that are external to the automated banking machine.
Periodically, it will be necessary to update or completely replace the installed software for the automated banking machine. The replacement software maybe intended to replace software for the entire automated banking machine, software for a specific subsystem of the automated banking machine, and/or specific routines within existing software. The updates may be driven by changes in technology, evolutions in banking regulations, changes in security standards, etc.
Previously, a software engineer entirely overlayed new software for an automated banking machine and/or subsystem any time an update was performed. Further, the software engineer and/or the automated banking machine did not retain within memory a copy of the installed old version of software. Problems frequently arose, for example when an incorrect version of the software is installed, when newly installed software proved incompatible with either customizations to the automated banking machine and/or its subsystems or with other systems in communication with the automated banking machine, when newly installed software introduced unforeseen errors, etc. Software engineers did not have a way to step back to previously installed versions for work automated banking machines without extensive effort. These problems could effectively disable an automated banking machine for an extended period of time.